home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 October / PCWorld_2006-10_cd.bin / temacd / xpcodecpack / XP Codec Pack 2.0.4.exe / mpc / mplayerc.exe / FILE / 712 < prev   
Text File  |  2006-05-05  |  1KB  |  62 lines

  1. sampler s0 : register(s0);
  2. float4 p0 : register(c0);
  3. float4 p1 : register(c1);
  4.  
  5. #define width (p0[0])
  6. #define height (p0[1])
  7. #define counter (p0[2])
  8. #define clock (p0[3])
  9. #define one_over_width (p1[0])
  10. #define one_over_height (p1[1])
  11.  
  12. #define PI acos(-1)
  13.  
  14. static float4x4 r2y =
  15. {
  16.     0.299, 0.587, 0.114, 0,
  17.     -0.147, -0.289, 0.437, 0,
  18.     0.615, -0.515, -0.100, 0,
  19.     0, 0, 0, 0
  20. };
  21.  
  22. static float4x4 y2r =
  23. {
  24.     1.0, 0.0, 1.140, 0, 
  25.     1.0, -0.394, -0.581, 0,
  26.     1.0, 2.028, 0.0, 0, 
  27.     0, 0, 0, 0
  28. };
  29.  
  30. #define ymin (16.0/255)
  31. #define ymax (235.0/255)
  32.  
  33. // Brightness: -1.0 to 1.0, default 0.0
  34. // Contrast: 0.0 to 10.0, default 1.0
  35. // Hue: -180.0 to +180.0, default 0.0
  36. // Saturation: 0.0 to 10.0, default 1.0
  37.  
  38. #define Brightness 0.0
  39. #define Contrast 1.0
  40. #define Hue 0.0
  41. #define Saturation 1.0
  42.  
  43. // tv -> pc scale
  44. // #define Brightness (-ymin)
  45. // #define Contrast (1.0/(ymax-ymin))
  46.  
  47. static float2x2 HueMatrix =
  48. {
  49.     cos(Hue * PI / 180), sin(Hue * PI / 180),
  50.     -sin(Hue * PI / 180), cos(Hue * PI / 180)
  51. };
  52.  
  53. float4 main(float2 tex : TEXCOORD0) : COLOR
  54. {
  55.     float4 c0 = tex2D(s0, tex);
  56.     c0 = mul(r2y, c0);
  57.     c0.r = Contrast * (c0.r - ymin) + ymin + Brightness;
  58.     c0.gb = mul(HueMatrix, c0.gb) * Saturation;
  59.     c0 = mul(y2r, c0);
  60.     return c0; 
  61. }
  62.